Skip to content

feat(image): bundle agent-CLI toolkit + TUI debug stack + Claude Code (#545)#547

Open
gerchowl wants to merge 2 commits into
mainfrom
feature/545-image-toolkit
Open

feat(image): bundle agent-CLI toolkit + TUI debug stack + Claude Code (#545)#547
gerchowl wants to merge 2 commits into
mainfrom
feature/545-image-toolkit

Conversation

@gerchowl

Copy link
Copy Markdown
Contributor

Summary

Bundles the agent-CLI + TUI-debug + Claude Code toolkit into the devcontainer image so Claude / cursor-agent sessions land in a fully-equipped environment without per-project tool installs.

Closes #545

What's added

Containerfile additions (single file change):

  • apt: expect neovim ripgrep fd-find bat fzf (+ symlinks /usr/local/bin/{fd,bat} → Debian's fdfind/batcat so agents can use the canonical names)
  • binary release downloads: eza delta lazygit zoxide starship freeze (none in apt for bookworm)
  • Claude Code baked via official installer with 3-attempt retry; symlinked to /usr/local/bin/claude
  • ENV IS_SANDBOX=1 so claude --dangerously-skip-permissions bypasses the uid-0 refusal cleanly (container is the trust boundary; documented escape hatch)
  • Aliases cc=claude and cld='claude --dangerously-skip-permissions' in /root/.bashrc

Tests (tests/test_image.py):

  • New TestAgentToolkit class with 36 cases covering presence + version-line for every added tool, plus IS_SANDBOX=1 env assertion and alias-content checks against /root/.bashrc
  • Bumps two pre-existing stale version pins (just 1.50→1.51, cargo-binstall 1.18→1.19) so CI is green on this PR — both were already failing on main

Validation

  • just build (linux/arm64) succeeds
  • just test-imageall 95 tests pass, including all 36 new TestAgentToolkit cases
  • Image size delta: ~+200MB
  • Tested manually that cc/cld aliases work in interactive shells

Test plan

  • CI green (build + tests)
  • just test-image against amd64 build (validated locally on arm64; user will retest on x86_64 host)
  • Smoke-test in real workspace: claude --version → 2.x; rg/fd/bat/tmux capture-pane/freeze all reachable

Related work

Part of the scope-split rework of #166 — see also #85 (Tailscale-in-container) and #546 (slim Claude Code OAuth-token forwarding) for the other slices.

Refs: #545

gerchowl added 2 commits May 15, 2026 15:53
Refs: #70

apt block extension: expect/neovim/ripgrep/fd-find/bat/fzf
  + symlinks /usr/local/bin/{fd,bat} so Debian fdfind/batcat names
    do not trip up agents.

Binary release downloads: eza/delta/lazygit/zoxide/starship/charm-freeze.

Claude Code baked in:
  - install via official installer (3-attempt retry, mirrors cursor-agent)
  - symlinked to /usr/local/bin/claude
  - ENV IS_SANDBOX=1 lets --dangerously-skip-permissions bypass the
    uid-0 refusal cleanly (container is the trust boundary)
  - aliases cc=claude, cld='claude --dangerously-skip-permissions'

Verified: image builds (linux/arm64), all 14 added tools resolve on PATH,
IS_SANDBOX=1 set, aliases written to /root/.bashrc.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] Bake agent-CLI toolkit + Claude Code into image (rg/fd/bat/eza/delta/lazygit/zoxide/starship/freeze/expect/nvim + IS_SANDBOX=1)

1 participant